Building Operable Software with TDD (but not the way you think) - Martin Thwaites
Martin 的 TDD 分享首段跟末段很呼應我這次鐵人賽的核心概念
首段講解什麼是 operable/actionable software
他批評那些僅能在本地運行並依賴 Debug 來發現營運環境問題的軟體,認為這樣的系統並不是真正可操作的。Martin 提到營運環境的即時恢復能力(MTTR)和穩健的遙測訊號(Telemetry signals),
這些都與《可觀測性工程》第 12 章提到的可操作性概念相吻合。可操作軟體應該能夠提供足夠的資訊來幫助你判斷需要採取的行動來解決問題。
在末段,Martin 進一步強調了 Observability Driven Development (ODD),強調可觀測性應該融入開發和測試流程,而不僅僅是在系統上線後才考慮。他舉了一個具體的資料存取層與快取的例子,說明如何在測試中利用 OpenTelemetry 這樣的工具來檢查應用程式在不同情境下的執行狀況。
例如,Martin 談到在快取實作的範例中,透過觀測程式是否進入了資料庫的查詢邏輯,來驗證系統的效能是否如預期。透過這種外部驅動的測試方法,開發者可以在本地或測試階段即早期發現問題,而不需要等到上線後才發現效能瓶頸或錯誤。
Martin 的關鍵點在於,將觀測訊號(例如 tracing)整合到測試環境中,不僅能幫助確認系統運行路徑是否正確,還能讓開發者對應用的內部狀態有更好的理解,進而幫助預防和診斷系統問題。這和你鐵人賽中的概念非常契合,尤其是你強調的將可觀測性內建於開發過程中,使系統能夠在任何時候提供即時、可靠的訊號來輔助問題排除與系統維運。